namespace Thought.Net.Telnet
{
    #region Enumerations

    /// <summary>
    ///     A telnet command.
    /// </summary>
    /// <remarks>
    ///     A telnet command is embedded in the stream of data being transferred
    ///     from one side of the connection to the other.  A command begins
    ///     with an IAC character (ASCII 255) followed by a byte that identifies
    ///     the command.
    /// </remarks>
    public enum TelnetCommand : byte
    {
        /// <summary>
        ///     End Subnegotiation (SE)
        /// </summary>
        /// <remarks>
        ///     This command indicates the end of subnegotiation data.
        /// </remarks>
        /// <seealso cref="Subnegotiation"/>
        EndSubnegotiation = 240,

        /// <summary>
        ///     No operation (NOP)
        /// </summary>
        NoOperation = 241,

        /// <summary>
        ///     Data Mark
        /// </summary>
        DataMark = 242,

        /// <summary>
        ///     Break (BRK)
        /// </summary>
        Break = 243,

        /// <summary>
        ///     Interrupt Process (IP)
        /// </summary>
        InterruptProcess = 244,

        /// <summary>
        ///     Abort output (AO)
        /// </summary>
        AbortOutput = 245,

        /// <summary>
        ///     Are You There (AYT)
        /// </summary>
        AreYouThere = 246,

        /// <summary>
        ///     Erase Character (EC)
        /// </summary>
        /// <seealso cref="EraseLine"/>
        EraseCharacter = 247,

        /// <summary>
        ///     Erase Line (EL)
        /// </summary>
        /// <seealso cref="EraseCharacter"/>
        EraseLine = 248,

        /// <summary>
        ///     Go Ahead (GA)
        /// </summary>
        GoAhead = 249,

        /// <summary>
        ///     Subnegotiation (SB)
        /// </summary>
        /// <seealso cref="EndSubnegotiation"/>
        Subnegotiation = 250,

        /// <summary>
        ///     Will do option (WILL)
        /// </summary>
        /// <seealso cref="Do"/>
        /// <seealso cref="Dont"/>
        /// <seealso cref="Wont"/>
        Will = 251,

        /// <summary>
        ///     Will not do option (WONT)
        /// </summary>
        /// <seealso cref="Do"/>
        /// <seealso cref="Dont"/>
        /// <seealso cref="Will"/>
        Wont = 252,

        /// <summary>
        ///     Do option (DO)
        /// </summary>
        /// <seealso cref="Dont"/>
        /// <seealso cref="Will"/>
        /// <seealso cref="Wont"/>
        Do = 253,

        /// <summary>
        ///     Don't do option (DONT)
        /// </summary>
        /// <seealso cref="Do"/>
        /// <seealso cref="Will"/>
        /// <seealso cref="Wont"/>
        Dont = 254,

        /// <summary>
        ///     IAC
        /// </summary>
        Iac = 255
    }

    #endregion Enumerations
}